This application, and the innovations and related subject matter disclosed herein, (collectively referred to as the “disclosure”) generally concern systems for automatically assembling tile maps and associated techniques. More particularly but not exclusively, disclosed tile-map-assembling systems and associated processing techniques can be incorporated in video game consoles or game engines. For example, a disclosed tile-map-assembling system can automatically assemble a given game world, or a portion thereof, from small, regular-shaped images called tiles, e.g., for a video game. Such tile maps (or “mosaics”) can provide performance and memory advantages insofar as large image files containing an entire game world or level map does not need to be stored. Rather, such maps are assembled from small images, or image fragments, used one or more times.
As used herein, the term “tile” refers to a standard sized image that can be assembled into a mosaic with other standard sized images to render a composite image. The term “tile map” generally refers to a composite image incorporating a plurality of tiles. A tile can take on any of a variety of shapes (e.g., square, isometric, hexagonal, triangular, etc.) and/or sizes. A plurality of tiles available for use in generating a tile map is sometimes referred to as a “tile set” (and sometimes alternatively called a “sprite sheet”). Tiles can be laid adjacent to one another in a systematic arrangement, e.g., a grid. Some tiles can be allowed to overlap, for example, when a tile representing a unit is overlaid onto a tile representing terrain. Tile sets can be used in two dimensional (2D) video games to create complex mosaics, or tile maps, from reusable tiles within the set. Using a tile set to display a map can reduce the amount of system memory used as compared to a fully rendered map since a tiled mosaic can reuse a given tile multiple times in the map. A tile map can also reduce an amount of artwork needed to generate a plurality of individual maps since several different maps can be created from a given tile set. In order for a map made from a tile set to appear more distinctive, games can assemble and display maps from a plurality of tile sets, with each tile set corresponding to a respective environment.
Although a tile map can be a convenient way of efficiently organizing and rendering, e.g., 2D game maps, properly defining rules that govern how different tile images should be placed or oriented relative to each other to assemble a tile map is difficult. For example, although some video games provide a tile map editor to allow a user or a developer to create tile maps, manually placing and rotating tiles to assemble a tile map from a tile set is tedious and time consuming. In general, tiles can be conceptualized as puzzle pieces, and when a person examines them visually, it can become apparent how various tiles should fit together. However, describing how such tiles ought to fit together to a computing environment (e.g., a video game console or a game engine) is a surprisingly difficult task. For example, the shape of a tile's content can change depending on how the tile or its content is intended to interact with neighboring tiles. For example, a square tile that interacts with neighbors on all sides looks very different from one with neighbors on just on opposed (e.g., left and right) sides.
Thus, a need remains for computationally efficient techniques for procedurally describing overall shape and orientation of a tile's contents. As well, a need remains for computationally efficient techniques for automatically determining which tiles from a selected one or more tile setsbelong together, and procedurally generating rules that control how the tiles are placed to assemble a tile map. And, improved systems and methods for assembling tile maps are needed.